﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;

namespace ivv
{
    public class calcularOfertas
    {
        public void calcularTotos()
        {
            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();
            SqlConnection sqld = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqld.Open();
            SqlConnection sqle = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqle.Open();

            double oferta = 0;
            double lancamento = 0;
            double venda = 0;
            double vendaLancamento = 0;

            double vendasTotais = 0;
            double ofertasTotais = 0;

            double ofertasAtuais = 0;

            string select = "select * from empreendimento";

            SqlCommand cmd = new SqlCommand(select, sqlc);
            SqlDataReader dr = cmd.ExecuteReader();

            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    string selectIvv = "SELECT  TOP 1 ";
                    selectIvv += "(SELECT sum(convert(numeric, i.quantidadeOfertasIvv)) as quantidadeOfertasIvv from ivv i  ";
                    selectIvv += "where i.codigoEmpreendimento = " + dr["codigoEmpreendimento"].ToString() + " and i.anoIvv = ivv.anoIvv AND i.mesIvv = ivv.mesIvv) as oferta, ";
                    selectIvv += "(SELECT sum(convert(numeric, i.quantidadeLancamentoIvv)) as quantidadeLancamentoIvv from ivv i  ";
                    selectIvv += "where i.codigoEmpreendimento = " + dr["codigoEmpreendimento"].ToString() + " and i.anoIvv = ivv.anoIvv AND i.mesIvv = ivv.mesIvv) as lancamento, ";
                    selectIvv += "(SELECT sum(convert(numeric, i.quantidadeVendaIvv)) as quantidadeVendaIvv from ivv i  ";
                    selectIvv += "where i.codigoEmpreendimento = " + dr["codigoEmpreendimento"].ToString() + " and i.anoIvv = ivv.anoIvv AND i.mesIvv = ivv.mesIvv) as venda, ";
                    selectIvv += "(SELECT sum(convert(numeric, i.quantidadeLancamentoVendaIvv)) as quantidadeLancamentoVendaIvv from ivv i  ";
                    selectIvv += "where i.codigoEmpreendimento = " + dr["codigoEmpreendimento"].ToString() + " and i.anoIvv = ivv.anoIvv AND i.mesIvv = ivv.mesIvv) as vendaLancamento ";
                    selectIvv += "FROM ivv WHERE codigoEmpreendimento = " + dr["codigoEmpreendimento"].ToString() + " and anoIvv <> '2044' ORDER BY anoIvv DESC, mesIvv DESC ";

                    SqlCommand cmdIvv = new SqlCommand(selectIvv, sqld);
                    SqlDataReader drIvv = cmdIvv.ExecuteReader();

                    if (drIvv.HasRows)
                    {
                        drIvv.Read();

                        if (drIvv["oferta"].ToString() != "")
                        {
                            oferta = Convert.ToDouble(drIvv["oferta"].ToString());
                        }
                        if (drIvv["lancamento"].ToString() != "")
                        {
                            lancamento = Convert.ToDouble(drIvv["lancamento"].ToString());
                        }
                        if (drIvv["venda"].ToString() != "")
                        {
                            venda = Convert.ToDouble(drIvv["venda"].ToString());
                        }
                        if (drIvv["vendaLancamento"].ToString() != "")
                        {
                            vendaLancamento = Convert.ToDouble(drIvv["vendaLancamento"].ToString());
                        }

                        vendasTotais = venda + vendaLancamento;
                        ofertasTotais = oferta + lancamento;

                        ofertasAtuais = ofertasTotais - vendasTotais;

                        string update = "UPDATE empreendimento SET quantidadeOfertaImovel = '" + ofertasAtuais + "' WHERE codigoEmpreendimento = " + dr["codigoEmpreendimento"].ToString();

                        SqlCommand cmdUpdate = new SqlCommand(update, sqle);
                        cmdUpdate.ExecuteNonQuery();
                    }

                    drIvv.Close();
                }
            }

            dr.Close();

            sqlc.Close();
            sqld.Close();
            sqle.Close();
        }

        public void calcularIndividual(string codigoEmpreendimento)
        {
            SqlConnection sqld = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqld.Open();
            SqlConnection sqle = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqle.Open();

            double oferta = 0;
            double lancamento = 0;
            double venda = 0;
            double vendaLancamento = 0;

            double vendasTotais = 0;
            double ofertasTotais = 0;

            double ofertasAtuais = 0;

            string selectIvv = "SELECT  TOP 1 ";
            selectIvv += "(SELECT sum(convert(numeric, i.quantidadeOfertasIvv)) as quantidadeOfertasIvv from ivv i  ";
            selectIvv += "where i.codigoEmpreendimento = " + codigoEmpreendimento + " and i.anoIvv = ivv.anoIvv AND i.mesIvv = ivv.mesIvv) as oferta, ";
            selectIvv += "(SELECT sum(convert(numeric, i.quantidadeLancamentoIvv)) as quantidadeLancamentoIvv from ivv i  ";
            selectIvv += "where i.codigoEmpreendimento = " + codigoEmpreendimento + " and i.anoIvv = ivv.anoIvv AND i.mesIvv = ivv.mesIvv) as lancamento, ";
            selectIvv += "(SELECT sum(convert(numeric, i.quantidadeVendaIvv)) as quantidadeVendaIvv from ivv i  ";
            selectIvv += "where i.codigoEmpreendimento = " + codigoEmpreendimento + " and i.anoIvv = ivv.anoIvv AND i.mesIvv = ivv.mesIvv) as venda, ";
            selectIvv += "(SELECT sum(convert(numeric, i.quantidadeLancamentoVendaIvv)) as quantidadeLancamentoVendaIvv from ivv i  ";
            selectIvv += "where i.codigoEmpreendimento = " + codigoEmpreendimento + " and i.anoIvv = ivv.anoIvv AND i.mesIvv = ivv.mesIvv) as vendaLancamento ";
            selectIvv += "FROM ivv WHERE codigoEmpreendimento = " + codigoEmpreendimento + " and anoIvv <> '2044' ORDER BY anoIvv DESC, mesIvv DESC ";

            SqlCommand cmdIvv = new SqlCommand(selectIvv, sqld);
            SqlDataReader drIvv = cmdIvv.ExecuteReader();

            if (drIvv.HasRows)
            {
                drIvv.Read();

                if (drIvv["oferta"].ToString() != "")
                {
                    oferta = Convert.ToDouble(drIvv["oferta"].ToString());
                }
                if (drIvv["lancamento"].ToString() != "")
                {
                    lancamento = Convert.ToDouble(drIvv["lancamento"].ToString());
                }
                if (drIvv["venda"].ToString() != "")
                {
                    venda = Convert.ToDouble(drIvv["venda"].ToString());
                }
                if (drIvv["vendaLancamento"].ToString() != "")
                {
                    vendaLancamento = Convert.ToDouble(drIvv["vendaLancamento"].ToString());
                }

                vendasTotais = venda + vendaLancamento;
                ofertasTotais = oferta + lancamento;

                ofertasAtuais = ofertasTotais - vendasTotais;

                string update = "UPDATE empreendimento SET quantidadeOfertaImovel = '" + ofertasAtuais + "' WHERE codigoEmpreendimento = " + codigoEmpreendimento;

                SqlCommand cmdUpdate = new SqlCommand(update, sqle);
                cmdUpdate.ExecuteNonQuery();
            }

            drIvv.Close();
            sqld.Close();
            sqle.Close();
        }
    }
}
